package com.yidu.t286.controller;
/*
 * @description: 基本参数控制器类
 * @author:文杰
 * @date  :2021/7/27 0027下午 2:32
 */


import com.yidu.t286.biz.impl.CarparameterBizImpl;
import com.yidu.t286.domain.Carparameter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/carparametercrud")
public class CarparameterController {

    @Autowired
    private CarparameterBizImpl carparameterBiz;

    /**
     * 按条件分页查询基本参数对象
     * @param req 请求对象
     * @param page 页数
     * @param limit 行数
     * @param carseriesId 车系编号
     * @return map集合
     */
    @GetMapping("/carparameter")
    public Map<String,Object> selectcarparameter(HttpServletRequest req, int page, int limit, String carseriesId){
        //定义用于构造多条件查询的基本参数对象
        Carparameter carparameter= new Carparameter();
        //判断并加入到基本参数对象中
        if(carseriesId!=null && carseriesId.trim().length()!=0){
            carparameter.setCarseriesId(Integer.parseInt(carseriesId));
        }
        //调用数据方法，根据用户对象构造查询条件字符串
        String condition=carparameterBiz.getCondition(carparameter);
        //执行多条件分页查询
        List<Carparameter> carparameterList=carparameterBiz.findByPage(limit,page,condition);
        //多条件查询表中总记录数
        int totalRows=carparameterBiz.count(condition);

        //定义映射集合对象
        Map<String,Object> mapData=new HashMap<String,Object>();
        //在映射集合中添加key为code，值为0的状态码
        mapData.put("code",0);
        //在映射集合中添加key为msg,值为响应信息字符串
        mapData.put("msg","");
        //在映射集合中添加key为count,值总行数的数据对
        mapData.put("count",totalRows);
        //在映射集合中添加key为data,值为基本集合对象
        mapData.put("data",carparameterList);
        //直接返回对象
        return mapData;
    }


    /**
     * 跟据基本参数编号删除数据
     * @param parameterId 基本参数编号
     * @return 信息字符串
     */
    @DeleteMapping("/carparameter/{parameterId}")
    public String deleteById(@PathVariable int parameterId){
        //调用业务层代码删除车辆
        int rows=carparameterBiz.delete(parameterId);
        //判断返回值
        if (rows>0){
            //删除成功
            return "delete success";
        }else{
            //删除失败
            return "delete failure";
        }
    }


    /**
     * 添加基本参数对象
     * @param carparameter 基本参数对象
     * @return 信息字符串
     */
    @PostMapping("/carparameter")
    public String add(@RequestBody Carparameter carparameter){
        //添加基本参数对象到数据库表
        int rows=carparameterBiz.add(carparameter);
        return rows>0?"add success":"add failure";
    }

    /**
     * 修改基本参数信息
     * @param carparameter 基本参数对象
     * @return  信息字符串
     */
    @PutMapping("/carparameter")
    public String update(@RequestBody Carparameter carparameter){
        //修改车辆信息对象到表
        int rows=carparameterBiz.update(carparameter);
        return rows>0?"update success":"update failure";
    }

    /**
     * 循环删除基本参数信息对象
     * @param parameterIdStr 基本参数编号字符串
     * @return 信息字符串
     */
    @PutMapping("/batchDel")
    public String batchDelById(@RequestParam String parameterIdStr){
        //对基本参数编号字符串按照","分割
        String[] parameterIds=parameterIdStr.split(",");
        //定义一个返回值
        String result="delete success";
        //循环删除
        for (String str:parameterIds){
            //转换类型
            int parameterId=Integer.parseInt(str);
            //调用业务层删除记录
            int rows= carparameterBiz.delete(parameterId);
            //判断
            if (rows<=0){
                result="batch delete failure";
                break;
            }
        }
        return result;
    }

}
